import os
import random
from datetime import datetime

# 定义图片所在目录
img_dir = "C:/Users/21659/Desktop/test/3201"

# 定义常见图片扩展名集合
img_extensions = {'.jpg', '.jpeg', '.png', '.gif', '.bmp'}

# 获取目录下所有文件并筛选出图片
try:
    all_files = os.listdir(img_dir)
except Exception as e:
    print(f"无法读取目录 {img_dir}: {e}")
    exit(1)

img_files = [f for f in all_files if os.path.splitext(f)[1].lower() in img_extensions]

if not img_files:
    print("目录中没有找到图片文件。")
    exit(0)

# 计算需要删除的图片数量（80%）
num_to_delete = int(len(img_files) * 0.75)

# 随机选择需要删除的文件
files_to_delete = random.sample(img_files, num_to_delete)

# 删除选中的图片
for f in files_to_delete:
    file_path = os.path.join(img_dir, f)
    try:
        os.remove(file_path)
        print(f"已删除: {f}")
    except Exception as e:
        print(f"删除文件 {f} 失败: {e}")

# 获取保留的图片列表
remaining_files = list(set(img_files) - set(files_to_delete))

# 重命名保留的图片
for f in remaining_files:
    old_path = os.path.join(img_dir, f)
    extension = os.path.splitext(f)[1].lower()
    # 使用当前系统时间格式化为月日小时分钟秒字符串
    now = datetime.now()
    timestr = now.strftime("%m%d%H%M%S")
    # 加入随机数以确保新文件名的唯一性
    new_filename = f"{timestr}_{random.randint(1000,9999)}{extension}"
    new_path = os.path.join(img_dir, new_filename)
    try:
        os.rename(old_path, new_path)
        print(f"重命名: {f} -> {new_filename}")
    except Exception as e:
        print(f"重命名 {f} 失败: {e}")